﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>    
//#include <stddef.h>
//struct s1
//{
//	int a;
//	char  q;
//	char w;
//};
//
//
//struct s2
//{
//	char q;
//	int a;
//	char w;
//
//};
//
//int main()
//{
//
//	/*printf("%zd\n", offsetof(struct s1, a));
//	printf("%zd\n", offsetof(struct s1, q));
//	printf("%zd\n", offsetof(struct s1, w));*/
//	/*printf("%zd\n", sizeof(struct s1));
//	printf("%zd\n", sizeof(struct s2));*/
//	printf("%zd\n", offsetof(struct s2, q));
//	printf("%zd\n", offsetof(struct s2, a));
//	printf("%zd\n", offsetof(struct s2, w));
//	return 0;
// }

//struct S3
//{
//	double d;
//	char c;
//	int i;
//};
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//
//
//
//int main()
//{
//	//printf("%zd", sizeof(struct S3));
//	printf("%d\n", sizeof(struct S4));
//	return 0;
//}
//#pragma pack(2)//将对齐数修改成了2 尽量写成2的次方数
// struct s1
//{
//	char a;	
//	char c;
//	int b;
//};
//#pragma pack()//这里对齐数是默认值
//int main()
//{
//	printf("%zd ", sizeof(struct s1));
//
//	return 0;
//}
//struct S1
//{
//	int arr[1000];
//	char n;
//	int a;
//};
//void  print(struct  S1 tmp)
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", tmp.arr[i]);
//	}
//	printf("\n");
//	printf("%c\n", tmp.n);
//	printf("%d\n", tmp.a);
//
//}
//void print1(struct S1* ps)//使用指针也是可以的。
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", ps->arr[i]);
//	}
//	printf("\n");
//	printf("%c\n", ps->n);
//	printf("%d\n", ps->a);
// }
//
//
//int main()
//{
//	struct S1 s = { {1,2,3,4,5,6,7,8,9,10},{'w'},100 };
//	print(s);
//	print1(&s);
//
//	return 0;
//}
//
//struct  A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _c : 30;
//
//
// };
//int main()
//{
//
//
//
//	return 0;
//}

//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//int main()
//{
//	struct S s = { 0 };
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//	printf("%zd ", sizeof(struct S));
//	return 0;
//}

//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//
//};
//int main()
//{
//	struct A sa = { 0 };
//	scanf("%d", &sa._b);//这是错误的
//
//	//正确的⽰范
//	int b = 0;
//	scanf("%d", &b);
//	sa._b = b;
//	return 0;
//}